//构建一个名为Student的结构体，它继承Person，并添加一个Grade字段，并对Grade字段进行封装，要求取值范围：1~3
//提供NewStudent函数来初始化Student对象

package main    //声明文件所在的包，每个go文件都必须有归属的包

import "fmt"   //引入程序中需要的包，为了使用包下的函数，例如：Println


type Person struct {
	Name string
	Age  int 
}

func NewPerson(name string,age int) *Person{
	return & Person{
		Name:name,
		Age:age,
	}
}

type Student struct{
	Grade int
	Person
}

func NewStudent(grade int,name string,age int)*Student{
	return &Student{
		Grade:grade,
		Person:*NewPerson(name,age),
	}
}
func (s *Student)SetGrade(grade int){
	if grade >= 1 && grade <= 3{
		s.Grade = grade
	} else {
		fmt.Println("年级错误")
	}
}
func (s *Student)GetGeade()int{
	return s.Grade
}

func main(){
	s :=NewStudent(2,"刘备",23)
	s.SetGrade(6)
	fmt.Println(s.GetGeade())
	s.SetGrade(3)
	fmt.Println(s.GetGeade())
}



